package swing;

import javax.swing.*;
import java.awt.*;

/**
 * 列表选择演示
 * @author fidel
 */
public class ListSelectDemo {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            JFrame form = new JFrame("列表选择");
            form.setVisible(true);
            form.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
            form.setSize(250, 250);
            form.setLocationRelativeTo(null);
            form.getContentPane().setLayout(new GridLayout(2, 1));
            JList<String> list = new JList<>(new String[] { "第一项", "第二项", "第三项", "第四项", "第五项" });
            // 获取JList对象的默认列表元件渲染器，呈现列表中的一个项
            DefaultListCellRenderer renderer = (DefaultListCellRenderer) list.getCellRenderer();
            // 设置列表元件相对列表的位置为居中
            renderer.setHorizontalAlignment(SwingConstants.CENTER);
            form.getContentPane().add(list);
            JLabel label = new JLabel();
            // 将标签内的文本设置为水平居中对齐
            label.setHorizontalAlignment(SwingConstants.CENTER);
            form.getContentPane().add(label);
            list.addListSelectionListener(e -> {
                // 返回包含所选项的值的List对象，并将其转换为数组
                Object[] values = list.getSelectedValuesList().toArray();
                StringBuilder sb = new StringBuilder();
                for (int i = 0; i < values.length; i++) {
                    if (i == values.length - 1) {
                        sb.append(values[i]);
                    } else {
                        sb.append(values[i]).append(" ");
                    }
                }
                label.setText(sb.toString());
            });
        });
    }
}
